#include <machine/asm.h>

#ifdef __mcoldfire__
#define GETC(a,b)	mvsb	a,b
#define	SUBC(a,b)	mvsb	a,%d0; subl %d0,b
#else
#define GETC(a,b)	movb	a,b
#define	SUBC(a,b)	subb	a,b
#endif

ENTRY(strcmp)
	movl	4(%sp),%a0
	movl	8(%sp),%a1
.L1:				/* unrolled by 4 for 680[23]0's */
	GETC((%a0)+,%d1)
	jeq	.L2
	SUBC((%a1)+,%d1)
	jne	.L3

	GETC((%a0)+,%d1)
	jeq	.L2
	SUBC((%a1)+,%d1)
	jne	.L3

	GETC((%a0)+,%d1)
	jeq	.L2
	SUBC((%a1)+,%d1)
	jne	.L3

	GETC((%a0)+,%d1)
	jeq	.L2
	SUBC((%a1)+,%d1)
	jeq	.L1

.L3:
#ifdef __mcoldfire__
	movl	%d1,%d0
#else
	scs	%d0
	EXTBL(%d0)
	movb	%d1,%d0
#endif
	rts

.L2:	movq	#0,%d0
	movb	(%a1),%d0
	negl	%d0
	rts
END(strcmp)
